package com.shidaimanong.demo.network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 学编程，关注：十代码农
 * 抖音、快手、B站、西瓜视频、今日头条
 */
public class UDPClientDemo {
    public static void main(String[] args) throws IOException {
        String serverAddress = "localhost";//服务器地址
        int serverPort = 7777;//服务器端口
        /*
         * 向服务端发送数据
         */
        // 1.定义服务器的地址、端口号、数据
        InetAddress address = InetAddress.getByName(serverAddress);
        byte[] data = "我是十代码农".getBytes();
        // 2.创建数据包，包含发送的数据信息
        DatagramPacket requestPacket = new DatagramPacket(data, data.length, address, serverPort);
        // 3.创建DatagramSocket对象
        DatagramSocket socket = new DatagramSocket();
        // 4.向服务器端发送数据包
        socket.send(requestPacket);

        /*
         * 接收服务器端响应
         */
        // 1.创建数据包，用于接收服务器端响应的数据
        byte[] responseData = new byte[1024];
        DatagramPacket responsePacket = new DatagramPacket(responseData, responseData.length);
        // 2.接收服务器响应的数据
        socket.receive(responsePacket);// 此方法在接收到数据之前会一直阻塞
        // 3.读取数据
        String reply = new String(responseData, 0, responsePacket.getLength());
        System.out.println("我是客户端，服务器说：" + reply);
        // 4.关闭资源
        socket.close();
    }
}
